package com.sunshine.pay.service;

import com.sunshine.pay.entity.Order;
import com.sunshine.pay.entity.OrderItem;
import sunshine.commcon.util.entity.Result;

import java.util.List;

/**
 * 订单服务接口
 */
public interface OrderService {
    
    /**
     * 创建订单
     * @param userId 用户ID
     * @param orderItems 订单项列表
     * @return 订单信息
     */
    Result<Order> createOrder(Long userId, List<OrderItem> orderItems);
    
    /**
     * 根据订单ID获取订单详情
     * @param orderId 订单ID
     * @return 订单信息
     */
    Result<Order> getOrderById(Long orderId);
    
    /**
     * 根据用户ID获取订单列表
     * @param userId 用户ID
     * @return 订单列表
     */
    Result<List<Order>> getOrdersByUserId(Long userId);
    
    /**
     * 更新订单状态
     * @param orderId 订单ID
     * @param status 新状态
     * @return 操作结果
     */
    Result<Boolean> updateOrderStatus(Long orderId, Integer status);
    
    /**
     * 用户确认收货
     * @param orderId 订单ID
     * @param userId 用户ID
     * @return 操作结果
     */
    Result<Boolean> confirmReceipt(Long orderId, Long userId);
    
    /**
     * 根据商家ID获取订单列表
     * @param merchantId 商家ID
     * @return 订单列表
     */
    Result<List<Order>> getOrdersByMerchantId(Long merchantId);
    
    /**
     * 商家发货
     * @param orderId 订单ID
     * @param merchantId 商家ID
     * @return 操作结果
     */
    Result<Boolean> merchantShipOrder(Long orderId, Long merchantId);
}